package com.ideabove.heart;


import com.ideabove.heart.manager.AppManager;
import com.ideabove.heart.manager.MoeManager;
import com.ideabove.heart.manager.ScheduleManager;
import com.ideabove.heart.manager.SoundManager;
import com.ideabove.heart.util.LogUtil;
import com.ideabove.heart.util.MyUtil;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends MyActivity{
	

	SoundManager soundMgr;
	int SOUND_IDX = 1;
	
	int tipIdx = 0;
	String [] tips = {			
			"특정 일자의 스토리를 감상하면 새로운 코스튬을 사용할 수 있게 됩니다. 모든 코스튬을 모아 보세요.",			
			"모닝콜을 끄거나 시간을 바꾸고 싶다면 '알람설정' 메뉴로 들어가면 됩니다.",
			"지금까지 통화한 내용을 확인하고 싶다면 '이전 통화' 메뉴로 들어가면 됩니다.",
			"모닝콜 전화를 받지 못하면 '부재 중 전화'가 표시됩니다. 이때 세희에게 전화를 걸어보세요. 세희의 귀여운 불평을 들어볼 수 있습니다.",
			"만약 '부재 중 전화'를 지우고 싶다면 '무시' 버튼을 눌러주세요.",
			"세희의 전화번호로 전화를 걸어보세요. 재미있는 일이 일어날 수도 있습니다.",
			"'환경설정' 메뉴에서 '스토리 모드'를 off로 변경하면 스토리와 무관한 특별한 대화가 시작됩니다.",
			"'환경설정' 메뉴에서 '스토리 초기화' 버튼을 누르면 현재까지 진행된 모든 스토리가 초기화 됩니다. 하지만 '이전 통화'와 코스튬은 초기화 되지 않으니 안심하세요.",
			"모닝콜 시간부터 설정된 모닝콜이 완전히 끝나는 시간까지 '이전 통화'와 '환경설정'을 제외한 모든 기능은 일시적으로 사용이 불가능합니다.",
			"26일째부터 앤딩을 볼 때까지는 모닝콜을 제외한 모든 통화가 불가능하게 됩니다. 버그가 아니니 안심하세요."
	};

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);                   
		setContentView(R.layout.moe_main);
		getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

		// 효과음
		soundMgr = new SoundManager(this);
		soundMgr.addSound(SOUND_IDX, R.raw.button_press);
		
		AppManager.start();
		
		// 통화하기버튼
		ImageView main_call_btn = (ImageView)findViewById(R.id.main_call_btn);
		main_call_btn.setOnTouchListener(new View.OnTouchListener() {

			@Override
			public boolean onTouch(View v, MotionEvent event) {				
				// TODO Auto-generated method stub
		
				ScheduleManager scheMgr = new ScheduleManager(MainActivity.this);
				if(scheMgr.isAlarming()){// 알람중이면
					//아, 세희한테 전화가 올 시간이니 다른 행동은 하지 말아야겠다.
					AlertDialog.Builder ab=new AlertDialog.Builder(MainActivity.this); 
					ab.setMessage("아, 세희한테 전화가 올 시간이니 다른 행동은 하지 말아야겠다.");					
					ab.setPositiveButton("확인", null);
					ab.show();
					
					return false;
				}
				
				MyUtil.touchMe(v, event, new MyUtil.ImageTouch() {

					@Override
					public void touch(View v, MotionEvent event) {
						// TODO Auto-generated method stub
						
						int alarmCnt = new ScheduleManager(MainActivity.this).getLastSchedule().getId();
						
						if(alarmCnt < 26){ // 26 일부터 전화를 안받음..
							MoeManager.setWhatWillIdo(MoeManager.DO_CHAT); // 메인에서 모에를 호출함.
							Intent intent = new Intent(MainActivity.this, SendingActivity.class);
							startActivity(intent);						
						}else{
							MoeManager.setWhatWillIdo(MoeManager.DO_CHAT_NO_ANSWER); // 메인에서 모에를 호출함.
							Intent intent = new Intent(MainActivity.this, SendingActivity.class);
							startActivity(intent);
						}
						
						AppManager.pause(MainActivity.this);						
					}
				});
				return true;
			}
		});

		// 시간설정버튼
		ImageView btn_set_alarm = (ImageView)findViewById(R.id.btn_set_alarm);
		btn_set_alarm.setOnTouchListener(new View.OnTouchListener() {

			@Override
			public boolean onTouch(View v, MotionEvent event) {				
				// TODO Auto-generated method stub
				ScheduleManager scheMgr = new ScheduleManager(MainActivity.this);
				if(scheMgr.isAlarming()){// 알람중이면
					//아, 세희한테 전화가 올 시간이니 다른 행동은 하지 말아야겠다.
					AlertDialog.Builder ab=new AlertDialog.Builder(MainActivity.this); 
					ab.setMessage("아, 세희한테 전화가 올 시간이니 다른 행동은 하지 말아야겠다.");					
					ab.setPositiveButton("확인", null);
					ab.show();
					
					return false;
				}
				
				MyUtil.touchMe(v, event, new MyUtil.ImageTouch() {
					@Override
					public void touch(View v, MotionEvent event) {
						// 시간설정모드로 이동한다.									
						MoeManager.setWhatWillIdo(MoeManager.DO_ALARMSET); // 메인에서 모에를 호출함.
						Intent intent = new Intent(MainActivity.this, SendingActivity.class);
						startActivity(intent);
					}
				});
				return true;
			}
		});   
		
		// 옷 갈아입히기
		ImageView btn_set_closet = (ImageView) findViewById(R.id.btn_set_closet);
		btn_set_closet.setOnTouchListener(new View.OnTouchListener() {

			@Override
			public boolean onTouch(View v, MotionEvent event) {				
				// TODO Auto-generated method stub
				ScheduleManager scheMgr = new ScheduleManager(MainActivity.this);
				if(scheMgr.isAlarming()){// 알람중이면
					//아, 세희한테 전화가 올 시간이니 다른 행동은 하지 말아야겠다.
					AlertDialog.Builder ab=new AlertDialog.Builder(MainActivity.this); 
					ab.setMessage("아, 세희한테 전화가 올 시간이니 다른 행동은 하지 말아야겠다.");					
					ab.setPositiveButton("확인", null);
					ab.show();
					
					return false;
				}
				
				MyUtil.touchMe(v, event, new MyUtil.ImageTouch() {
					@Override
					public void touch(View v, MotionEvent event) {
						
						MoeManager.setWhatWillIdo(MoeManager.DO_SHOP_CLOSET); // 메인에서 모에를 호출함.
						Intent intent = new Intent(MainActivity.this, SendingActivity.class);
						startActivity(intent);						
					}
				});
				return true;
			}
		});   


		// 통화목록버튼
		ImageView btn_set_call_list = (ImageView)findViewById(R.id.btn_set_call_list);
		btn_set_call_list.setOnTouchListener(new View.OnTouchListener() {

			
			@Override
			public boolean onTouch(View v, MotionEvent event) {			
				// TODO Auto-generated method stub
				MyUtil.touchMe(v, event, new MyUtil.ImageTouch() {
					@Override
					public void touch(View v, MotionEvent event) {						
						soundMgr.playSound(SOUND_IDX);						
						Intent intent = new Intent(MainActivity.this, CallListActivity.class);
						MainActivity.this.startActivity(intent);
						
					}
				});
				return true;
			}
		});   

		// 환경설정		
		ImageView btn_set_profile = (ImageView)findViewById(R.id.btn_set_profile);
		btn_set_profile.setOnTouchListener(new View.OnTouchListener() {

			@Override
			public boolean onTouch(View v, MotionEvent event) {			
				// TODO Auto-generated method stub
				MyUtil.touchMe(v, event, new MyUtil.ImageTouch() {

					@Override
					public void touch(View v, MotionEvent event) {						
						soundMgr.playSound(SOUND_IDX);						
						Intent intent = new Intent(MainActivity.this, SettingActivity.class);
						MainActivity.this.startActivity(intent);						
					}
				});
				return true;
			}
		});   

		// 얼굴누르기
		ImageView btn_main_face = (ImageView)findViewById(R.id.btn_main_face);
		btn_main_face.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				soundMgr.playSound(SOUND_IDX);
		
				TextView main_tip_text = (TextView)findViewById(R.id.main_tip_text);
				main_tip_text.setVisibility(View.VISIBLE);
				main_tip_text.setText(tips[tipIdx]);
				
				int alarmCnt = new ScheduleManager(MainActivity.this).getLastSchedule().getId();
				if(alarmCnt > 26){
					tipIdx = tipIdx >= tips.length - 1 ? 0 : tipIdx + 1;
				}else{
					tipIdx = tipIdx >= tips.length - 2 ? 0 : tipIdx + 1;
				}
			}
		});
		

	}

	
	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();		
		AppManager.pause(MainActivity.this);
	}



	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		
		AppManager.pause(MainActivity.this);
		if(soundMgr != null){
			soundMgr.clear();
		}

		super.onDestroy();
	}

}
